
package com.tenentia.pcmps.swm.data;

import com.tenentia.pcmps.swm.data.implementation.DataAccessObjectsFactoryImpl;

/**
 * 
 * @author tEnEntia, S.L.N.E.
 * 
 */
public abstract class DataAccessObjectsFactory {

	private static DataAccessObjectsFactory staticInstance;

	public static final Integer BONUS_DAO = 1;
	
	public static final Integer GROUPS_DAO = BONUS_DAO + 1;

	public static final Integer INSURANCE_POLICIES_DAO = GROUPS_DAO + 1;

	public static final Integer MARKETING_PROMOTIONS_DAO = INSURANCE_POLICIES_DAO + 1;

	public static final Integer PDF_TEMPLATES_DAO = MARKETING_PROMOTIONS_DAO + 1;

	public static final Integer PERSONS_DAO = PDF_TEMPLATES_DAO + 1;
	
	public static final Integer ROLES_DAO = PERSONS_DAO + 1;
	
	public static final Integer STATES_DAO = ROLES_DAO + 1;
	
	public static final Integer WAY_TYPES_DAO = STATES_DAO + 1;
	
	public static final Integer PARAMETERS_DAO = WAY_TYPES_DAO + 1;

	static {

		staticInstance = DataAccessObjectsFactoryImpl.getInstance();
	}

	public DataAccessObjectsFactory() {

		super();
	}

	public static DataAccessObjectsFactory getInstance() {

		return staticInstance;
	}

	public abstract DataAccessObject createNewDataAccessObject(Integer dataAccessObjectType) throws DataAccessException;

}
